package com.etc.service.impl.vehicle;

import com.etc.entity.system.BizVehicle;
import com.etc.repository.vehicle.BizVehicleRepository;
import com.etc.result.CodeMessage;
import com.etc.result.ResultBean;
import com.etc.service.vehicle.IBizVehicleService;
import com.etc.utils.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @Author : DDS
 * @Description : 海康卫视车辆信息 业务层实现类
 * @Date: 2019-12-09 18:51
 */
@Slf4j
@Service
public class BizVehicleServiceImpl implements IBizVehicleService {

    @Autowired
    private BizVehicleRepository bizVehicleRepository;

    /**
     * 海康卫视车辆信息 的添加
     *
     * @return 统一的返回值ResultBean
     */
    @Override
    public ResultBean save(String filePath) {

        try {
            List<BizVehicle> bizVehicles = assemble(filePath);
            bizVehicleRepository.saveAll(bizVehicles);
            return ResultBean.success();
        } catch (Exception e) {
            log.error(e.getMessage());
            e.printStackTrace();
            return ResultBean.error(CodeMessage.SAVE_DEFEATED.getCode(), CodeMessage.SAVE_DEFEATED.getMassage());
        }

    }

    /**
     * 组装需要添加的List
     *
     * @return List<BizVehicle>
     * @throws FileNotFoundException 文件不存在的异常
     */
    public static List<BizVehicle> assemble(String filePath) throws FileNotFoundException {
        List<BizVehicle> bizVehicles = new ArrayList<>();

            BizVehicle bizVehicle = new BizVehicle();
            //获取目录名
            String[] directoryName = filePath.split("\\\\");

            //添加ip地址到bizVehicle对象中
            bizVehicle.setIpAddress(directoryName[2]);

            //切分directoryName获取文件名
            String[] pictureName = directoryName[6].split("_");
            //获取当前时间
            Date now = new Date();
            //添加入库时间到bizVehicle对象中
            bizVehicle.setInsertDate(now);

            //添加文件创建时间到bizVehicle对象中
            bizVehicle.setCreateDate(DateUtils.convert(pictureName[4]));
            //添加车牌号码到bizVehicle对象中
            bizVehicle.setVehPlate(pictureName[6]);
            //添加车速到bizVehicle对象中
            bizVehicle.setSpeed(Float.valueOf(pictureName[0]));
            //添加车型到bizVehicle对象中
            bizVehicle.setType(pictureName[1]);

            //将bizVehicle对象添加到List数组中
            bizVehicles.add(bizVehicle);

        return bizVehicles;

    }

}
